home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / profile.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  2KB  |  105 lines

  1. #ifndef _LINUX_PROFILE_H
  2. #define _LINUX_PROFILE_H
  3.  
  4. #ifdef __KERNEL__
  5.  
  6. #include <linux/kernel.h>
  7. #include <linux/config.h>
  8. #include <linux/init.h>
  9. #include <linux/cpumask.h>
  10. #include <asm/errno.h>
  11.  
  12. #define CPU_PROFILING    1
  13. #define SCHED_PROFILING    2
  14.  
  15. struct proc_dir_entry;
  16. struct pt_regs;
  17.  
  18. /* init basic kernel profiler */
  19. void __init profile_init(void);
  20. void profile_tick(int, struct pt_regs *);
  21. void profile_hit(int, void *);
  22. #ifdef CONFIG_PROC_FS
  23. void create_prof_cpu_mask(struct proc_dir_entry *);
  24. #else
  25. #define create_prof_cpu_mask(x)            do { (void)(x); } while (0)
  26. #endif
  27.  
  28. enum profile_type {
  29.     PROFILE_TASK_EXIT,
  30.     PROFILE_MUNMAP
  31. };
  32.  
  33. #ifdef CONFIG_PROFILING
  34.  
  35. struct notifier_block;
  36. struct task_struct;
  37. struct mm_struct;
  38.  
  39. /* task is in do_exit() */
  40. void profile_task_exit(struct task_struct * task);
  41.  
  42. /* task is dead, free task struct ? Returns 1 if
  43.  * the task was taken, 0 if the task should be freed.
  44.  */
  45. int profile_handoff_task(struct task_struct * task);
  46.  
  47. /* sys_munmap */
  48. void profile_munmap(unsigned long addr);
  49.  
  50. int task_handoff_register(struct notifier_block * n);
  51. int task_handoff_unregister(struct notifier_block * n);
  52.  
  53. int profile_event_register(enum profile_type, struct notifier_block * n);
  54. int profile_event_unregister(enum profile_type, struct notifier_block * n);
  55.  
  56. int register_timer_hook(int (*hook)(struct pt_regs *));
  57. void unregister_timer_hook(int (*hook)(struct pt_regs *));
  58.  
  59. /* Timer based profiling hook */
  60. extern int (*timer_hook)(struct pt_regs *);
  61.  
  62. struct pt_regs;
  63.  
  64. #else
  65.  
  66. static inline int task_handoff_register(struct notifier_block * n)
  67. {
  68.     return -ENOSYS;
  69. }
  70.  
  71. static inline int task_handoff_unregister(struct notifier_block * n)
  72. {
  73.     return -ENOSYS;
  74. }
  75.  
  76. static inline int profile_event_register(enum profile_type t, struct notifier_block * n)
  77. {
  78.     return -ENOSYS;
  79. }
  80.  
  81. static inline int profile_event_unregister(enum profile_type t, struct notifier_block * n)
  82. {
  83.     return -ENOSYS;
  84. }
  85.  
  86. #define profile_task_exit(a) do { } while (0)
  87. #define profile_handoff_task(a) (0)
  88. #define profile_munmap(a) do { } while (0)
  89.  
  90. static inline int register_timer_hook(int (*hook)(struct pt_regs *))
  91. {
  92.     return -ENOSYS;
  93. }
  94.  
  95. static inline void unregister_timer_hook(int (*hook)(struct pt_regs *))
  96. {
  97.     return;
  98. }
  99.  
  100. #endif /* CONFIG_PROFILING */
  101.  
  102. #endif /* __KERNEL__ */
  103.  
  104. #endif /* _LINUX_PROFILE_H */
  105.